<?php if ( ! defined("BASEPATH")) exit("No direct script access allowed");

class Pedidos extends CI_Controller {
		
	public function __construct(){
		parent::__construct();
		init_painel();
	}

	public function index(){
		$this->gerenciar();
	}
	
	public function cadastrar(){
		esta_logado();
		$this->form_validation->set_rules('nome', 'NOME', 'trim|required|ucwords');
		$this->form_validation->set_rules('valor', 'VALOR', 'required');
		$this->form_validation->set_rules('referencia', 'REFERÊNCIA', '');
		$this->form_validation->set_rules('valor_produto', 'VALOR DO PRODUTO', '');
		if ($this->form_validation->run()==TRUE):
			$dados = elements(array('nome'), $this->input->post(NULL, TRUE));
			$dados['valor'] = modificaDinheiroBanco($this->input->post('valor', TRUE));
			$dados['situacao'] = 'Pendente';
			$id_pedido = $this->pedidos->do_insert($dados, FALSE);
			/* Inserir na Tabela pedidos_item */
			$referencia = $this->input->post('referencia');
			$valor_produto = $this->input->post('valor_produto');
			$quantidade = $this->input->post('quantidade');
			$quant_linhas = count($referencia);
			$referencia_duplicada = NULL;
			for ($i=0; $i<$quant_linhas; $i++):
				$dados2['id_pedido'] = $id_pedido;
				$dados2['referencia'] = $referencia[$i];
				$dados2['quantidade'] = $quantidade[$i];
				//verificar se existe esta referencia cadastrada no sistema
				$query_pedido_item = $this->pedidos->get_byid_item($dados2['referencia'], 'referencia')->num_rows();
				if ($query_pedido_item > 0):
					$referencia_duplicada = 1;
					$dados2['duplicado'] = $referencia_duplicada;
				else:
					$dados2['duplicado'] = NULL;
				endif;
				$dados2['valor_produto'] = $valor_produto[$i];
				$dados2['situacao'] = 'Pendente';
				$this->pedidos->do_insert_item($dados2, FALSE);
			endfor;
			set_msg('msgok', 'Cadastro efetuado com sucesso.', 'sucesso');
			if ($referencia_duplicada == 1):
				redirect(base_url('painel/pedidos/referencia/'.$id_pedido));
			else:
				redirect(base_url('painel/pedidos/cadastrar'));
			endif;
		endif;
		$data = array(
			'tela' => 'cadastrar'
		);
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script.min', 'cidadesEstado.min', 
			'select2/select2.min', 'select2/select2_locale_pt-BR.min', 'select2/select2-script.min', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min', 'valida_cpf', 'campos_dinamico')));
		set_tema('headerinc', load_css(array('select2/select2-foundation5.min', 'datepicker/foundation-datepicker.min')));
		set_tema('titulo', 'Cadastro de pedidos');
		set_tema('conteudo', load_modulo('painel', 'pedidos', $data));
		load_template();
	}
	
	public function referencia(){
		esta_logado();
		$this->form_validation->set_rules('informacoes', 'INFORMAÇÕES DO FORMULÁRIO', 'required');
		if ($this->form_validation->run()==TRUE):
			//verificar os dados enviados via formulario
			if ($this->input->post('cont_referencia') != ''):
				for($cont = 0; $cont < $this->input->post('cont_referencia'); $cont++):
					$contador = $cont +1;
					if ($this->input->post('id_produto'.$contador) != ''):
						//Inserção - vincula produto a referencia
						$dados['id_pedido'] = $this->input->post('id_pedido');
						$dados['id_pedido_item'] = $this->input->post('id_pedido_item'.$contador);
						$dados['id_produto'] = $this->input->post('id_produto'.$contador);
						$this->produtos->do_insert_item($dados, FALSE);
					endif;
				endfor;
			endif;
			redirect(base_url().'painel/pedidos/gerenciar');
		endif;
		$data = array(
			'tela' => 'referencia'
		);
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script.min', 'cidadesEstado.min', 
			'select2/select2.min', 'select2/select2_locale_pt-BR.min', 'select2/select2-script.min', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min', 'valida_cpf', 'campos_dinamico')));
		set_tema('headerinc', load_css(array('select2/select2-foundation5.min', 'datepicker/foundation-datepicker.min')));
		set_tema('titulo', 'Referencia Duplicada');
		set_tema('conteudo', load_modulo('painel', 'pedidos', $data));
		load_template();
	}

	public function gerenciar(){
		esta_logado();
		$data = array(
			'tela'	=> 'gerenciar',
			'query'	=> $query = $this->pedidos->get_all()->result()
		);
		set_tema('headerinc', load_css(array('datatables/dataTables.foundation.min')));
		set_tema('footerinc', load_js(array('datatables/jquery.dataTables.min', 'datatables/dataTables.foundation.min', 'app.min')));
		set_tema('titulo', 'Listagem de pedidos');
		set_tema('conteudo', load_modulo('painel', 'pedidos', $data));
		load_template();
	}
	
	public function editar(){
		esta_logado();
		$idpedido = $this->uri->segment(4);
		$this->form_validation->set_rules('nome', 'NOME', 'trim|required|ucwords');
		$this->form_validation->set_rules('valor', 'VALOR', 'required');
		$this->form_validation->set_rules('referencia', 'REFERÊNCIA', '');
		$this->form_validation->set_rules('valor_produto', 'VALOR DO PRODUTO', '');
		if ($this->form_validation->run()==TRUE):
			$id_pedido = $this->input->post('idpedidos', TRUE);
			$dados = elements(array('nome'), $this->input->post(NULL, TRUE));
			$dados['valor'] = modificaDinheiroBanco($this->input->post('valor', TRUE));
			
			$this->pedidos->do_update($dados, array('id'=>$id_pedido), FALSE);
			
			/* Inserir na Tabela pedidos_item */
			$referencia = $this->input->post('referencia');
			$valor_produto = $this->input->post('valor_produto');
			$quant_linhas = count($referencia);
			for ($i=0; $i<$quant_linhas; $i++):
				$dados2['id_pedido'] = $id_pedido;
				$dados2['referencia'] = $referencia[$i];
				$dados2['valor_produto'] = $valor_produto[$i];
				$dados2['situacao'] = 'Pendente';
				$this->pedidos->do_insert_item($dados2, FALSE);
			endfor;
			
			auditoria('Edição de Pedido', 'O pedido "'.$this->input->post('nome', TRUE).'" foi editado.');
			set_msg('msgok', 'Alteração dos dados efetuado com sucesso.', 'sucesso');
			redirect(current_url());
		endif;
		$data = array(
			'tela'		=> 'editar',
			'idpedido'	=> $idpedido,
			'query'		=> $this->pedidos->get_byid($idpedido)->row()
		);
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script.min', 'cidadesEstado.min', 
			'select2/select2.min', 'select2/select2_locale_pt-BR.min', 'select2/select2-script.min', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min', 'campos_dinamico')));
		set_tema('headerinc', load_css(array('select2/select2-foundation5.min', 'datepicker/foundation-datepicker.min')));
		set_tema('titulo', 'Alteração de pedidos');
		set_tema('conteudo', load_modulo('painel', 'pedidos', $data));
		load_template();
	}
	
	public function excluir(){
		esta_logado();
		if (is_admin(TRUE)):
			$idpedido = $this->uri->segment(4);
			if ($idpedido != NULL):
				$query = $this->pedidos->get_byid($idpedido);
				if ($query->num_rows()==1):
					$query = $query->row();
					$this->pedidos->do_delete(array('id'=>$query->id), FALSE);
				else:
					set_msg('msgerro', 'Pedido não encontrado para exclusão', 'erro');
				endif;
			else:
				set_msg('msgerro', 'Escolha um pedido para excluir', 'erro');
			endif;
		endif;
		redirect('painel/pedidos/gerenciar');
	}

	public function receber_produtos(){
		esta_logado();
		$idpedido = $this->uri->segment(4);
		if ($idpedido == NULL || $idpedido == ''):
			set_msg('msgerro', 'Escolha um pedido para alterar', 'erro');
			redirect('painel/pedidos/gerenciar');
		else:
			//localziar itens do pedido
			$pendente = 0;
			$recebido = 0;
			$query = $this->pedidos->get_byid_item($idpedido, 'id_pedido')->result();
			foreach ($query as $linha):
				if ($linha->situacao == 'Pendente'):
					$dados['situacao'] = ($this->input->post($linha->id)==1) ? 'Recebido' : 'Pendente';
					if ($dados['situacao'] == 'Recebido'):
						//verificar se a referencia esta vinculado ao produto antes de inserir
						$query_item = $this->produtos->get_byid_pedidos_item($linha->id, 'id_pedido_item')->num_rows();
						if ($query_item > 0):
							//inserir estoque para o produto
							$query_item = $this->produtos->get_byid_pedidos_item($linha->id, 'id_pedido_item')->row();
							$query_produto = $this->produtos->get_byid($query_item->id_produto, 'id')->row();
							$dados2['quantidade'] = $query_produto->quantidade + $linha->quantidade;
							$this->produtos->do_update($dados2, array('id'=>$query_produto->id), FALSE);
							$this->pedidos->do_update_item($dados, array('id'=>$linha->id), FALSE);
						endif;
					endif;
				endif;
			endforeach;
		endif;
		$data = array(
			'tela'	=> 'receber_produtos',
			'query'	=> $query = $this->pedidos->get_byid_item($idpedido, 'id_pedido')->result()
		);
		set_tema('headerinc', load_css(array('datepicker/foundation-datepicker.min')));
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/maskedinput-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min')));
		
		//set_tema('headerinc', load_css(array('datatables/dataTables.foundation.min')));
		//set_tema('footerinc', load_js(array('datatables/jquery.dataTables.min', 'datatables/dataTables.foundation.min', 'app.min')));
		set_tema('titulo', 'Listagem de pedidos');
		set_tema('conteudo', load_modulo('painel', 'pedidos', $data));
		load_template();
	}
	
	public function gerar_pagamento(){
		esta_logado();
		$idpedido = $this->uri->segment(4);
		if ($idpedido == NULL || $idpedido == ''):
			set_msg('msgerro', 'Escolha um pedido para alterar', 'erro');
			redirect('painel/pedidos/gerenciar');
		else:
			$this->form_validation->set_rules('parcelamento_id', 'PARCELAMENTO', 'required');
			$this->form_validation->set_rules('forma_pagamento_id', 'FORMA DE PAGAMENTO', 'required');
			if ($this->form_validation->run()==TRUE):
				//localziar itens do pedido
				$pendente = 0;
				$recebido = 0;
				$total = 0;
				$query = $this->pedidos->get_byid_item($idpedido, 'id_pedido')->result();
				foreach ($query as $linha):
					if ($linha->situacao == 'Recebido'):
						$enviado = ($this->input->post($linha->id)==1) ? '1' : '0';
						if ($enviado == 1):
							$dados['contas_pagar'] = 'gerado';
							$total = $total + $linha->valor_produto;
						endif;
						$this->pedidos->do_update_item($dados, array('id'=>$linha->id), FALSE);
					endif;
					$dados = NULL;
				endforeach;
				//gerar contas a pagar
				$dados['tipos_despesas_id'] = '1';
				$dados['pedido_id'] = $this->uri->segment(4);
				$dados['descricao'] = 'pedido '.$this->uri->segment(4);
				$dados['valor'] = $total;
				$dados['parcelamento_id'] = $this->input->post('parcelamento_id');
				$dados['created'] = date('Y-m-d H:i:s');
				$this->contas_pagar->do_insert($dados);
				//localizar ultimo id do contas a pagar
				$query_contas_pagar = $this->contas_pagar->get_ultimo()->row();
				$contas_pagar_id = $query_contas_pagar->id;
				//localizar id do parcelamento para descobrir a quantidade de parcelas a serem geradas
				$query_parcelamento = $this->parcelamento->get_byid($this->input->post('parcelamento_id', 'parcelamento_id'))->row();
				$valor_parcela = $dados['valor'] / $query_parcelamento->quant_parcela;
				$dados = NULL;
				$dia_alterado = NULL;
				for ($parcela=0; $parcela<$query_parcelamento->quant_parcela; $parcela++):
					if ($parcela == 0):
						$data_inicio = explode("/",$this->input->post('data_inicio'));
						$ano = $data_inicio[2];
						$mes = $data_inicio[1];
						$dia = $data_inicio[0];
					else:
						//gerar as datas corretas das parcelas
						$mes = $mes + 1;
						if ($mes > 12):
							$mes = 1;
							$ano = $ano + 1;
						endif;
					endif;
					$ultimo_dia_mes = cal_days_in_month(CAL_GREGORIAN, $mes, $ano);
					if ($ultimo_dia_mes < $dia):
						$dia_alterado = $ultimo_dia_mes;
					endif;
					$dados['n_parcela'] = $parcela + 1;
					$valor_parcela = number_format($valor_parcela, 2, '.', '');
					if (($query_parcelamento->quant_parcela - 1) != $parcela):
						//primeira até a penultima parcela
						$dados['valor'] = $valor_parcela;
					else:
						//ultima parcela
						$dados['valor'] =  $total - ($valor_parcela * $parcela);
					endif;
					if ($dia_alterado == ''):
						$dados['vencimento'] = date($ano.'-'.$mes.'-'.$dia);
					else:
						$dados['vencimento'] = date($ano.'-'.$mes.'-'.$dia_alterado);
					endif;
					$dia_alterado=NULL;
					$dados['situacao'] = 'Pendente';
					$dados['contas_pagar_id'] = $contas_pagar_id;
					$dados['created'] = date('Y-m-d H:i:s');
					$dados['forma_pagamento_id'] = $this->input->post('forma_pagamento_id');
					$this->contas_pagar_parcela->do_insert($dados);
				endfor;
				redirect(base_url().'painel/pedidos/gerenciar');
			else:
				redirect(base_url('painel/pedidos/receber_produtos/'.$idpedido));
			endif;
		endif;
		set_tema('headerinc', load_css(array('datepicker/foundation-datepicker.min')));
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/maskedinput-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min')));
		//set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script.min', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min')));
		//set_tema('headerinc', load_css(array('datepicker/foundation-datepicker.min')));
		set_tema('titulo', 'Listagem de pedidos');
		
		$data = array(
			'tela'	=> 'gerar_pagamento',
			'query'	=> $query = $this->pedidos->get_byid_item($idpedido, 'id_pedido')->result()
		);
		set_tema('conteudo', load_modulo('painel', 'pedidos', $data));
		load_template();
	}
	
	public function excluir_item(){
		esta_logado();
		if (is_admin(TRUE)):
			$iditem = $this->uri->segment(4);
			if ($iditem != NULL):
				$query = $this->pedidos->get_byid_item($iditem);
				if ($query->num_rows()==1):
					$query = $query->row();
					$this->pedidos->do_delete_item(array('id'=>$query->id), FALSE);
				else:
					set_msg('msgerro', 'Item não encontrado para exclusão', 'erro');
				endif;
			else:
				set_msg('msgerro', 'Escolha um item para excluir', 'erro');
			endif;
		endif;
		if($this->session->userdata('redir_pedidos')):
			redirect('painel/pedidos/editar/'.$this->session->userdata('redir_pedidos'));
		else:
			redirect('painel/pedidos/gerenciar');
		endif;
	}

	public function excluir_pagamentos(){
		esta_logado();
		if (is_admin(TRUE)):
			$idpagamento = $this->uri->segment(4);
			if ($idpagamento != NULL):
				$query = $this->pedidos->get_byid_pagamentos($idpagamento);
				if ($query->num_rows()==1):
					$query = $query->row();
					$this->pedidos->do_delete_pagamentos(array('id'=>$query->id), FALSE);
				else:
					set_msg('msgerro', 'Pagamento não encontrado para exclusão', 'erro');
				endif;
			else:
				set_msg('msgerro', 'Escolha um pagamento para excluir', 'erro');
			endif;
		endif;
		if($this->session->userdata('redir_pagamentos')):
			redirect('painel/pedidos/gerenciar_pagamentos/'.$this->session->userdata('redir_pagamentos'));
		else:
			redirect('painel/pedidos/gerenciar');
		endif;
	}
}

/* End of file pedidos.php */
/* Location: ./application/controllers/pedidos.php */
